<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of BoUploadsManager
 * @author EADeveloper
 */
class BoUploadsManager extends easoftwarebussinesobject {

    public function enviaCorreoCarga($body, $subject) {
        $mail = new phpmailer;

        $mail->From = "cargasautomaticas@sercogua.com";
        $mail->FromName = "Agente de Cargas Automaticas";

        $a = $this->getArrayData("SELECT EMAIL, NOMBRE FROM app_responsable_cargas;");
        foreach ($a as $c) {
            $mail->addAddress($c["EMAIL"], $c["NOMBRE"]);
        }
        $mail->AddCC("eliudiaz@gmail.com", "Eliu Diaz");
        $mail->AddCC("cargasautomaticas@sercogua", "Eliu Diaz");
        $mail->WordWrap = 50;    // set word wrap
        $mail->Host = "mail.sercogua.com";
        $mail->Subject = $subject;
        $mail->Body = $body;

        if (!$mail->Send()) {
            return $mail->ErrorInfo;
        }
    }

    public function reportarCarga($nombre, $size, $exito, $resumen, $error = null, $subject = "Informe Carga") {
        $ip = $_SERVER['REMOTE_ADDR'];
        $agente = getParam("key_agente");
        $sql = sprintf("INSERT INTO app_informe_carga
            (NOMBRE_CARGA, FECHA, TAMA_ARCHIVO, EXITOSO, DATOS_ERROR, ENVIADO, IP_ORIGEN, KEY_AGENTE,RESUMEN) 
                VALUES ('%s', NOW(), %s, %s, '%s', 0, '%s', '%s','%s')", $nombre, $size, $exito, $error, $ip, $agente, $resumen);
        try {
            $this->execute($sql);
            $this->enviaCorreoCarga($resumen . chr(13) . $error, $subject);
        } catch (Exception $e) {
            die($e->getTraceAsString());
        }
    }

    /**
     *
     * @param type $name
     * @return type 
     */
    public static function getMe($name = "BoCobros") {
        return parent::getMe($name);
    }

    /**
     * @param type $file
     * @return string 
     */
    public function procesarBODUpload($file = null) {

        $this->execute("delete from cubo_bod");
        $contenido = file_get_contents($file);
        $objetos = json_decode($contenido);

        $insertHead = "INSERT INTO cubo_bod
        (codigoembarque,HBL, Prealerta_SG, MBL, CNTR, SHIPPER, CNEE, Peso_master, Volumen_master, peso_house, 
                volumen_house, Barco, PuertoCarga, ETD, PuertoDescarga, ETA, fechaDescarga, fechaEntregaDocumento, 
                fechaPagosGastos, Tipogasto, fecharetiro,fecha_liberacion, cobro_hbl, No_manifiesto , 
                pago_mbl,Tipo_cntr,Tamanio_cntr,dias_credito,viaje,CETA,Fecha,AgenteEmbarcador) VALUES ";
        $valores = "";
        $objetos = $objetos[0]["data"];
        $c = 0;
        $cc = 0;
        $error = "";

        foreach ($objetos as $ob) {
            $valores.=
                    sprintf("('%s','%s','%s','%s','%s','%s', '%s', 
                            '%s', '%s', '%s', 
                            '%s', '%s', '%s', 
                            '%s', '%s', '%s', '%s', 
                            '%s', '%s', '%s', '%s', 
                            '%s', '%s', '%s', 
                            '%s','%s', '%s', 
                            '%s','%s', '%s','%s', 
                            '%s'),", addslashes($ob["codigoembarque"]), addslashes($ob["HBL"]), addslashes($ob["Prealerta_SG"]), addslashes($ob["MBL"]), addslashes($ob["CNTR"]), addslashes($ob["SHIPPER"]), addslashes($ob["CNEE"]), addslashes($ob["Peso_master"]), addslashes($ob["Volumen_master"]), addslashes($ob["peso_house"]), addslashes($ob["volumen_house"]), addslashes($ob["Barco"]), addslashes($ob["PuertoCarga"]), addslashes($ob["ETD"]), addslashes($ob["PuertoDescarga"]), addslashes($ob["ETA"]), addslashes($ob["fechadescarga"]), addslashes($ob["FechaEntregaDocumento"]), addslashes($ob["FechaPagoGastos"]), addslashes($ob["Tipogasto"]), addslashes($ob["fecharetiro"]), addslashes($ob["fecha_liberacion"]), addslashes($ob["cobros_hbl"]), addslashes($ob["No_manifiesto"]), addslashes($ob["pago_mbl"]), addslashes($ob["Tipo_cntr"]), addslashes($ob["Tamanio_cntr"]), addslashes($ob["dias_credito"]), addslashes($ob["viaje"]), addslashes($ob["CETA"]), addslashes($ob["Fecha"]), addslashes($ob["AgenteEmbarcador"]));
            $c++;
            if ($c == 500 || $c == count($objetos) - 1) {
                $valores = substr($valores, 0, strlen($valores) - 1);
                try {
                    $this->execute($insertHead . $valores);
                    $valores = "";
                    $cc = $cc + $c;
                    $c = 0;
                } catch (Exception $e) {
                    $error.="Error: " . $e->getMessage() . "\n";
                    echo $error;
                }
            }
        }
        $resumen = "Registros insertados con exito: $cc";
        $this->reportarCarga("Datos de Reporte BOD", "0", isEmpty($error) ? 1 : 0, $resumen, $error, "Carga Automatica BOD!");
        return "SUCCESS_PROCCESS";
    }

    /**
     * @param type $file
     * @return string 
     */
    public function procesarGerentesUpload($file = null) {
        $this->execute("delete from cubo_gerentes");
        $contenido = file_get_contents($file);
        $objetos = json_decode($contenido, true);
        $insertHead = "INSERT INTO cubo_gerentes
        (codigoembarque,HBL, Prealerta_SG, 
        MBL, CNTR, SHIPPER, CNEE, 
        Peso_master, Volumen_master, peso_house, volumen_house, 
        Barco, PuertoCarga, ETD, PuertoDescarga, 
        ETA, fechaDescarga, fechaEntregaDocumento, fechaPagosGastos, 
        Tipogasto, fecharetiro,fecha_liberacion, fecha_manifiesto, 
        No_manifiesto ) VALUES ";
        $valores = "";
        $objetos = $objetos[0]["data"];
        $error = 0;
        $c = 0;
        $cc = 0;
        $resumen = $error = "";
        foreach ($objetos as $ob) {
            $valores.=
                    sprintf("('%s','%s', '%s', '%s', 
                        '%s', '%s', '%s', '%s', 
                        '%s', '%s', '%s', '%s', 
                        '%s', '%s', '%s', '%s', 
                        '%s', '%s', '%s', '%s', 
                        '%s','%s', '%s', '%s'),", addslashes($ob["codigoembarque"]), addslashes($ob["HBL"]), 
                            addslashes($ob["Prealerta_SG"]), addslashes($ob["MBL"]), 
                            addslashes($ob["CNTR"]), addslashes($ob["SHIPPER"]), 
                            addslashes($ob["CNEE"]), addslashes($ob["Peso_master"]), 
                            addslashes($ob["Volumen_master"]), addslashes($ob["peso_house"]), 
                            addslashes($ob["volumen_house"]), addslashes($ob["Barco"]), 
                            addslashes($ob["PuertoCarga"]), addslashes($ob["ETD"]), 
                            addslashes($ob["PuertoDescarga"]), addslashes($ob["ETA"]), 
                            addslashes($ob["fechadescarga"]), addslashes($ob["FechaEntregaDocumento"]), 
                            addslashes($ob["FechaPagoGastos"]), addslashes($ob["Tipogasto"]), 
                            addslashes($ob["fecharetiro"]), addslashes($ob["fecha_liberacion"]), 
                            addslashes($ob["fecha_manifiesto"]), addslashes($ob["No_manifiesto"]));
            $c++;
            if ($c == 500 || $c == count($objetos) - 1) {
                $valores = substr($valores, 0, strlen($valores) - 1);
                try {
                    $this->execute($insertHead . $valores);
                    $valores = "";
                    $cc = $cc + $c;
                    $c = 0;
                } catch (Exception $e) {
                    $error.="Error: " . $e->getMessage() . "\n";
                }
            }
        }
        $resumen = "Registros insertados con exito: $cc";
        $this->reportarCarga("Datos de Reporte Gerentes", "0", isEmpty($error) ? 1 : 0, $resumen, $error, "Carga Automatica Gerentes!");
        return "SUCCESS_PROCCESS";
    }

    /**
     * @param type $file
     * @return string 
     */
    public function procesarAgentesUpload($file = null) {

        $this->execute("delete from cubo_agentes ");
        $contenido = file_get_contents($file);
        $objetos = json_decode($contenido, true);
        EaParseSpecialChars($objetos);

        $insertHead = "INSERT INTO cubo_agentes
        (HBL, Prealerta_SG, MBL, CNTR, SHIPPER, CNEE, Peso_master, Volumen_master, peso_house, 
                volumen_house, Barco, PuertoCarga, ETD, PuertoDescarga, ETA, fechaDescarga, fechaEntregaDocumento, 
                fechaPagosGastos, Tipogasto, fecharetiro,idAgente,No_embarque,viaje,tipoCarga,devolucion_equipo,
                entrega_hbl) VALUES ";
        $valores = "";
        $objetos = $objetos[0]["data"];
        $c = 0;
        $error = 0;
        $cc = 0;
        $resumen = $error = "";
        foreach ($objetos as $ob) {
            $valores.=
                    sprintf("('%s', '%s', '%s', '%s', '%s','%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s',
                         '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s'),", 
                            addslashes($ob["HBL"]), addslashes($ob["Prealerta_SG"]), addslashes($ob["MBL"]), 
                            addslashes($ob["CNTR"]), addslashes($ob["SHIPPER"]), addslashes($ob["CNEE"]), 
                            addslashes($ob["Peso_master"]), addslashes($ob["Volumen_master"]), addslashes($ob["peso_house"]), 
                            addslashes($ob["volumen_house"]), addslashes($ob["Barco"]), addslashes($ob["PuertoCarga"]), 
                            addslashes($ob["ETD"]), addslashes($ob["PuertoDescarga"]), addslashes($ob["ETA"]), 
                            addslashes($ob["fechadescarga"]), addslashes($ob["FechaEntregaDocumento"]), 
                            addslashes($ob["FechaPagoGastos"]), addslashes($ob["Tipogasto"]), 
                            addslashes($ob["fecharetiro"]), addslashes($ob["idAgente"]), addslashes($ob["No_embarque"]), 
                            addslashes($ob["viaje"]), addslashes($ob["tipoCarga"]), addslashes($ob["devolucion_equipo"]),
                            addslashes($ob["entrega_hbl"]));
            $c++;
            if ($c == 500 || $c == count($objetos) - 1) {
                $valores = substr($valores, 0, strlen($valores) - 1);
                try {
                    $this->execute($insertHead . $valores);
                    $valores = "";
                    $cc = $cc + $c;
                    $c = 0;
                } catch (Exception $e) {
                    $error.="Error: " . $e->getMessage() . "\n";
                }
            }
        }
        $resumen = "Registros insertados con exito: $cc";
        $this->reportarCarga("Datos de Reporte Agentes", "0", isEmpty($error) ? 1 : 0, $resumen, $error, "Carga Automatica Agentes!");

        return "SUCCESS_PROCCESS";
    }

    /**
     *
     * @param type $file
     * @return string 
     */
    public function procesarClientesUpload($file = null) {
        $this->execute("delete from cubo_clientes");
        $contenido = file_get_contents($file);
        $objetos = json_decode($contenido, true);
        $objetos = $objetos[0]["data"];
        EaParseSpecialChars($objetos);

        $insertHead = "INSERT INTO cubo_clientes
                            (codigoembarque,Fecha_Arribo,Destino_final,descripcion,FechaPago,idconsignatario,tipo_de_carga,
                            HBL, ETD, ETA, PuertoCarga, PuertoDescarga, fechaDescarga, fechaEntregaDocumento, 
                            fechaPagosGastos, Tipogasto, fecharetiro,idCliente,lugar_recibido,status) VALUES ";
        $valores = "";
        $c = 0;
        $error = 0;
        $cc = 0;
        $resumen = $error = "";
        foreach ($objetos as $ob) {
            $valores.=
                    sprintf("( '%s','%s', '%s', '%s', '%s', '%s', '%s', '%s','%s', '%s', 
                        '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s'),", addslashes($ob["codigoembarque"]), addslashes($ob["Fecha_Arribo"]),
                            addslashes($ob["Destino_final"]), addslashes($ob["descripcion"]), 
                            addslashes($ob["FechaPago"]), addslashes($ob["idconsignatario"]), 
                            addslashes($ob["tipo_de_carga"]), addslashes($ob["HBL"]), 
                            addslashes($ob["ETD"]), addslashes($ob["ETA"]), 
                            addslashes($ob["PuertoCarga"]), addslashes($ob["PuertoDescarga"]), 
                            addslashes($ob["fechadescarga"]), addslashes($ob["FechaEntregaDocumento"]), 
                            addslashes($ob["FechaPagoGastos"]), addslashes($ob["Tipogasto"]), 
                            addslashes($ob["fecharetiro"]), addslashes($ob["idCliente"]), 
                            addslashes($ob["lugar_recibido"]),addslashes($ob["status"]));
            $c++;
            if ($c == 500 || $c == count($objetos) - 1) {
                $valores = substr($valores, 0, strlen($valores) - 1);
                try {
                    $this->execute($insertHead . $valores);
                    $valores = "";
                    $cc = $cc + $c;
                    $c = 0;
                } catch (Exception $e) {
                    $error.="Error: Insertando carga";
                    die($e->getTraceAsString());
                }
            }
        }
        $resumen = "Registros insertados con exito: $cc";
        $this->reportarCarga("Datos de Reporte Clientes", "0", isEmpty($error) ? 1 : 0, $resumen, $error, "Carga Automatica Clientes!");
        return "SUCCESS_PROCCESS";
    }

}

?>